The ability to produce smaller transistors has allowed the construction of microprocessors with greater transistor density and thus many more transistors. It is predicted that in two generations, as the industry moves from 65 nm technology to 32 nm technology, high-performance microprocessors will contain more than four billion transistors.
The promise of growing numbers of transistor devices, and practical limits to further increasing the performance of single-core microprocessors, has led the industry to investigate the production of multicore microprocessor systems. A multicore microprocessor provides multiple microprocessor “cores” on a single integrated circuit (or “chip”), the cores communicating with each other and with entities outside the microprocessor chip (e.g., shared memory) using some common mechanism.
Smaller transistors can have improved energy efficiency; however, generally the energy efficiency of next generation transistors lags behind the growth in transistor density. This growing disparity leads to two distinct problems: (1) the problem of “power density”, often leading to “local thermal hot-spots,” where a particular region of the chip consumes more power than can be quickly dissipated, causing a rapid rise in temperature in that region, and (2) the problem of “global power dissipation,” where the power consumed by the entire chip cannot be fully dissipated using cost-effective cooling methods. These problems may place various limitations on simultaneous use of the growing resources, and are expected to largely dictate the provisioning and use of resources in future multicore systems.
Generally, the resources of a multicore processor, including the cores and components associated with the cores, are provisioned such that they are expected to be highly utilized by a set of important application programs. When resources are highly utilized, the potential problems of global heat dissipation and local hot-spots can be addressed using a number of known techniques. For example, resources may have their clock speeds reduced to lower their temperature while still allowing them to operate, or may be shut off altogether allowing them to cool.
On the other hand, when certain other applications do not highly utilize all of the multicore resources, global heat dissipation may be less problematic, and other methods of mitigating thermal hot-spots arise. For example, some multicore processor resources, such as caches, can be put into a sleep state when they are not being used to reduce the total power consumption of the microprocessor. Alternatively, a technique known as “Activity Migration” can interchange the use of active and idle resources, such that previously active resources become idle and cool down, while cooler, previously idle resources become active and begin to warm. Applying activity migration to an entire core means that computation being performed on a hot, active core is moved to a cooler, idle core, using a technique known as “Heat and Run.”
Each of these cases limits the duty cycle of the resources to less than 100%, preventing the thermal envelope of the chip, defining its maximum power dissipation at acceptable operating temperatures, from being exceeded, and also preventing local hot-spots from causing localized damage to the circuits. However, this reduction of duty cycle may lead to a loss of performance depending on the nature of the application and the number of resources available.
Potentially, the number of resources that may be provisioned in an integrated circuit, in particular the number of cores, is limited only by the available area of the chip substrate. Conventional wisdom, however, is that cores may be added usefully to a chip only until the aggregate reduction in duty cycle of the cores to manage heat dissipation reaches the processing power of one full core. When operating near this thermal limit, adding an additional core requires a commensurate reduction in duty cycle of the other cores that is greater than the extra processing time added by the additional core, thereby leading to an overall degradation in performance. Conventional wisdom also indicates that additional core resources should be added only when it is expected that certain important applications will be able to utilize these resources.